Datuve :: Forums :: Arhīvs :: otrā maksimālā vērtība, minimālā un maksimālā vērtība --> PHP

Datuve

Mana Datuve

Reģistrācija | Noteikumi | Paroles atjaunošana



Forums

Ieskaties


Raksti

Lietotāji online

Lietotāji online: 96

Reģistrētie lietotāji online: 0

Viesi online: 96

Datuve.lv video
Top.LV

otrā maksimālā vērtība, minimālā un maksimālā vērtība --> PHP

Ievietoja: rokers @ 2008.02.10 15:33  

Es esmu saskāries ar poblēmu, māku dabūt maksimālo vērtību, minimālo, bet nekur nevaru atrast informāciju par otro maksimālāko!

Es izmantoju šo maksimālajai vērtībai --


$lielakais = max($kom2, $kom3, $kom4, $kom5, $kom6, $kom7, $kom8);



Un šo mazākajai vērtībai --


$mazakais = min($kom2, $kom3, $kom4, $kom5, $kom6, $kom7, $kom8);



Un kā būtu ar šo pašu, otrais lielākais?

Komentāri:

#1 rokers @ 2008.02.10 15:34

Un $kom2 u.t.t ir skaitļi

#2 drono @ 2008.02.10 15:52

Es droši vien darītu kaut kā šādi:


$skaitli = array($kom2, $kom3, $kom4, $kom5, $kom6, $kom7, $kom8);
$lielakais = max($skaitli);

$skaitli2 = array();
foreach($skaitli as $skaitlis){
 if($skaitlis!=$lielakais)array_push($skaitli2, $skaitlis);
}

$lielakais2 = max($skaitli2);

 

#3 rokers @ 2008.02.10 15:58

Lielu lielais paldies, bet kurā vietā ir jāmainai, lai dabūtu 3. lielāko u.t.t?

#4 bombtrack @ 2008.02.10 15:59

Ieliec skaitļus masīvā, sakārto, un tad varēsi kaut vai 10. lielāko dabūt...

#5 KillerBean @ 2008.02.10 15:59

vai var arī nedefinējot otru masīvu, vnk izņemt max vērtību.
atrod max veertiibas key.. un ar array_splice iznjem to aaraa..

#6 drono @ 2008.02.10 16:06

Jā, labāk jau tomēr ir salikt visu masīvā, sakārtot masīvu ar sort() vai asort() un tad ņemt pa vienam elementam no gala ārā ar array_pop();
Tad tikai jāskatās, vai masīvā nav 2 vienādi skaitļi.

#7 rokers @ 2008.02.10 16:08

Es izmantoju #2 variantu, un viss stradā, tikai smadzenes nesaprot kurā vietā kas jāmaina lai paņemtu 3. lielāko!

#8 bombtrack @ 2008.02.10 16:15

Tā kā #2 variantā teikts, nebūs tev viegli pielāgot, lai atrastu 3. lielāko skaitli. Nu vari to pašu ciklu atkārtot ar jauniegūto masīvu $skaitli2... Ja negribi ar kārtošanu, tad dari, kā #5 komentārā teikts - atrodi lielāko un izgriez ārā to no masīva.

#9 drono @ 2008.02.10 16:26

$skaitli = array($kom2, $kom3, $kom4, $kom5, $kom6, $kom7, $kom8);
sort($skaitli);
$lielakais = array_pop($skaitli);

do {$iznemam = array_pop($skaitli);} while ($iznemam == $lielakais);

$lielakais2 = $iznemam;

do {$iznemam = array_pop($skaitli);} while ($iznemam == $lielakais2);

$lielakais3 = $iznemam;

utt...

Šitā būs labāk.

Starp citu, #2 variants nedarbosies, ja lielākais skaitlis atkārtojas, tad tev parādīs to pašu skaitli arī kā otru lielāko.

Lai dabūtu minimālās vērtības, sort($skaitli) vietā izmanto rsort($skaitli);

#10 rokers @ 2008.02.10 19:06

Skaidris! Paldies! ;)